import { requestClient } from '#/api/request';
import type { Recordable } from '@vben/types';

export namespace ComponentApi {
  export interface getComponentResult {
    data: string;
    status: number;
  }
}
export namespace TableApi {
  export interface PageFetchParams {
    [key: string]: any;
    page: number;
    pageSize: number;
  }
}

/**
 * 获取组成成分
 */
export async function getComponentApi() {
  return requestClient.get<ComponentApi.getComponentResult>('/msds/component');
}

/**
 * 获取化学信息
 * @param data 参数
 */
export async function getChemicalInfoApi(data: any) {
  return requestClient.post('/msds/chemical', data);
}

/**
 * 处理MSDS数据，主要用于提交数据和获取数据；
 * 提交数据时，必须要有msdsNo
 * 获取信息时，当msdsNo为空或null时，data为max时最大的MSDS编号，否则返回所有MSDS数据；
 * 当msdsNo不为空时，data不为max时返回对应编号的数据，否则报错
 * @param {string} action 处理类型(submit:提交, getInfo:获取信息, delete:删除, print:打印)
 * @param {string} msdsNo MSDS编号(action为submit时必须要有, getInfo时：非空则获取对应的MSDS信息)
 * @param {any} data 数据(submit:待提交的MSDS数据, getInfo:为max返回最大的MSDS编号、其他值则返回MSDS数据)
 */
export async function handleMSDSdataApi(
  action: 'submit' | 'getInfo' | 'delete' | 'print',
  msdsNo?: string,
  data?: any
) {
  return requestClient.post('msds/msds', {
    action: action,
    msdsNo: msdsNo,
    data: data,
  });
}

/**
 * 分页查询MSDS数据
 */
export async function getMSDSdataApi(params: TableApi.PageFetchParams) {
  return requestClient.get('/msds/list', { params });
}

/**
 * 示例
 *
 */
// export async function exampleApi(
//   id: string,
//   data: Omit<SystemRoleApi.SystemRole, 'id'>,
// ) {
//   return requestClient.post(`/example/${id}`, data);
// }

/**
 * 分页查询MSDS数据
 */
export async function getMSDSListApi(params: Recordable<any>) {
  return requestClient.get<Array<TableApi.PageFetchParams>>('/msds/list', { params });
}

export async function printMSDSdataApi(action: 'submit' | 'getInfo' | 'delete' | 'print', msdsNo?: string) {
  return requestClient.post('msds/print', {
    action: action,
    msdsNo: msdsNo,
  });
}
